"""
3346. 皇后问题
DESCRIPTION
STATISTICS
DISCUSSION

Time limit per test: 2.0 seconds

Memory limit: 256 megabytes

八皇后问题是一个以国际象棋为背景的问题：如何能够在 8×8 的国际象棋棋盘上放置八个皇后，使得任何一个皇后都无法直接吃掉其他的皇后？为了达到此目的，任两个皇后都不能处于同一条横行、纵行或斜线上。

八皇后问题可以推广为更一般的 n 皇后摆放问题：这时棋盘的大小变为 n×n，而皇后个数也变成 n。

现在给你 n 个皇后的位置座标，问总共有多少对皇后互相冲突。
Input

第一行一个整数 n，表示有 n 个皇后。

接下来 n 行，每行两个整数 x,y (1≤x,y≤n)，中间用空格分开，表示 n 个皇后的坐标。

数据保证不会有两个皇后在同一个地方。

数据规模约定：

    对于 60% 的数据，1≤n≤100。
    对于 100% 的数据，1≤n≤10^5。

Output

输出一个整数，表示有多少对皇后互相冲突。
Examples
Input

3
1 1
1 2
1 3

Output

3

Input

2
1 1
2 2

Output

1

Input

4
1 3
2 1
3 4
4 2

Output

0

"""
"""
# 这个解法在60%之后超时

n = int(input())
a =[]
for i in range(n):
    a.append([int(x) for x in input().split()])

result =0
for x in a:
    for y in a:
        if x==y:
            continue
        if x[0]==y[0] or x[1]==y[1] or x[1]-y[1] == x[0]-y[0] or x[1]-y[1] == y[0]- x[0]:
            result +=1

print(result//2)
"""


n = int(input())
a =[]
d_row = {}
d_col = {}
d_slash = {} #斜线  x+y相同
d_backlash = {} #反斜线，x-y相同
for i in range(n):
    x, y = [int(m) for m in input().split()]
    a.append([x, y])
    if x in d_row:
        d_row[x] +=1
    else:
        d_row[x] = 1
    if y in d_col:
        d_col[y] +=1
    else:
        d_col[y] = 1
    if x+y in d_slash:
        d_slash[x+y] +=1
    else:
        d_slash[x+y] = 1
    if x-y in d_backlash:
        d_backlash[x-y] +=1
    else:
        d_backlash[x-y] = 1

result =0
# 冲突对数=同一条线上皇后数 v*(v-1)/2
for v in d_row.values():
    result += v*(v-1)//2
for v in d_col.values():
    result += v*(v-1)//2
for v in d_slash.values():
    result += v*(v-1)//2
for v in d_backlash.values():
    result += v*(v-1)//2

print(result)
